/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Bean;

import Controller.ClienteDAO;
import Model.Cliente;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.context.RequestContext;

/**
 *
 * @author iron
 */
@ManagedBean(name="cliente")
@SessionScoped
public class ClienteMBean {
    Cliente obj;
    ArrayList<Cliente> listaClientes;
    ArrayList<Cliente> clientesFiltrados;
    Cliente clienteEscolhido;
    
    public ClienteMBean() {
        this.obj = new Cliente();
        listaClientes = carregaListaClientes();
    }

    public void Salvar(ActionEvent event){        
        if(!validarCampos()) {
            return;
        }
        try{
        ClienteDAO.INSTANCE.insert(obj.getNome(), obj.getTelefone(), obj.getCpf());
        VendaMBean.listaMedicamentos();
        }catch(Exception ex){
            ex.printStackTrace();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Falhou!"));
            return;
        }
        listaClientes = carregaListaClientes();
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Cadastro Concluido com Sucesso"));
        System.out.println("Cadastro CONCLUIDO com sucesso!");
        obj = new Cliente();
    }   
    
    public void Deletar(ActionEvent event){
        try{
            ClienteDAO.INSTANCE.delete(clienteEscolhido.getCpf());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Cliente excluido com Sucesso"));
            listaClientes = ClienteDAO.INSTANCE.listarClientes();
            clienteEscolhido = null;
            clientesFiltrados = null;
        }catch(Exception ex){
            ex.printStackTrace();
            System.out.println("Falhou!");
        }
        //RequestContext.getCurrentInstance().execute("tabelaCliente.update()");
    }       
    
    public Cliente getObj() {
        return obj;
    }

    public void setObj(Cliente obj) {
        this.obj = obj;
    }

    private boolean validarCampos() {
        boolean retorno = true;
        if(obj.getNome().isEmpty()){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Insira o Nome do Cliente.",null));
            retorno = false;
        }
        if(obj.getCpf() == 0){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Insira o CPF do Cliente.",null));
            retorno = false;
        }
        if(obj.getTelefone().isEmpty()){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Insira o Telefone do Cliente.",null));
            retorno = false;
        }
        
        return retorno;
    }

    private ArrayList<Cliente> carregaListaClientes() {
        try{
            listaClientes = ClienteDAO.INSTANCE.listarClientes();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return listaClientes;
    }

    public ArrayList<Cliente> getListaClientes() {
        return listaClientes;
    }

    public void setListaClientes(ArrayList<Cliente> listaClientes) {
        this.listaClientes = listaClientes;
    }

    public ArrayList<Cliente> getClientesFiltrados() {
        return clientesFiltrados;
    }

    public void setClientesFiltrados(ArrayList<Cliente> clientesFiltrados) {
        this.clientesFiltrados = clientesFiltrados;
    }

    public Cliente getClienteEscolhido() {
        return clienteEscolhido;
    }

    public void setClienteEscolhido(Cliente clienteEscolhido) {
        this.clienteEscolhido = clienteEscolhido;
    }
      
    
}
